package com.healthcloud.dao.patient;

import com.healthcloud.dao.BaseDao;
import com.healthcloud.dto.res.CountSpecsRes;
import com.healthcloud.entity.patient.PatientDataEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 患者数据
 *
 * @author zhangjie
 */
public interface PatientDataDao extends BaseDao<PatientDataEntity> {
    PatientDataEntity queryByIdCard(String idCard);

    /**
     * 根据身份证号，查询是否为特殊处理患者
     *
     * @param idCard
     * @return
     */
    String getSpecRemarkByIdCard(@Param("idCard") String idCard);

    /**
     * 统计近一个月每天的特殊处理患者人数
     *
     * @return
     */
    List<CountSpecsRes> countSpecsLastMonth(@Param("ids") String ids);

    /**
     * 统计近每个月特殊处理患者人数
     *
     * @return
     */
    List<CountSpecsRes> countSpecsPerMonth(@Param("ids") String ids, @Param("year") String year);

    /**
     * 修改患者数据的特殊处理备注
     *
     * @param data
     * @return
     */
    Integer updateSpecRemark(@Param("data") PatientDataEntity data);

    Integer updateSpecStatus(@Param("idCard") String idCard, @Param("specStatus") Integer specStatus);

    /**
     * 根据身份证号，查询患者是否已绑定仪器：血压计
     * @param idCard
     * @return
     */
    Integer getBpDeviceBindStatus(@Param("idCard") String idCard);

    /**
     * 根据身份证号，查询最近7天是否测量过血压
     * @param idCard
     * @return
     */
    Integer getBpTestDataSevenDays(@Param("idCard") String idCard);

    /**
     * 根据身份证号，查询患者是否已绑定仪器：血糖仪
     * @param idCard
     * @return
     */
    Integer getBgDeviceBindStatus(@Param("idCard") String idCard);

    /**
     * 根据身份证号，查询最近7天是否测量过血糖
     * @param idCard
     * @return
     */
    Integer getBgTestDataSevenDays(@Param("idCard") String idCard);

    /**
     * 修改病人身份证号
     * @param oldIdCard 修改前身份证号
     * @param newIdCard 修改后身份证号
     */
    void updateIdCard(@Param("newIdCard") String newIdCard, @Param("oldIdCard") String oldIdCard);

}